package bud.web.controller;

import java.util.List;

import javax.inject.Inject;

import lombok.extern.slf4j.Slf4j;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.ModelAttribute;
import org.springframework.web.bind.annotation.RequestMapping;

import bud.vo.BoardFormDTO;
import bud.vo.ReplyDTO;
import bud.web.boardbud.service.IBoardbudService;

@Controller
@Slf4j
public class ReplyController {
	@Inject
	IBoardbudService service;
	
	@RequestMapping("replyInsert")
	public String replyInsert(ReplyDTO reply, Model model) {

		int result = service.insertReply(reply);
		// StringBuffer sb = new StringBuffer();
		BoardFormDTO<ReplyDTO> form = new BoardFormDTO<ReplyDTO>();
		String jsonResult = "";
		if (result > 0) {
			// sb.append("{\"state\":\"success\","); //처리결과를 나타내는 JSON 데이터 셋팅
			form.setState("success");
			form.setBo_no(reply.getRe_ref_key());
			form.setCurrentPage(1);
			form.setScreen_size(10);
			form.setBlock_size(5);
			form.setTotalRecords(service.getRepCount(reply.getRe_ref_key()));
			List<ReplyDTO> repList = service.getRepList(form);
			// 자바스크립트에서 프로퍼티 구분을 ,(콤마)로 함
			// 수정된 댓글 리스트를 새로 가져와서 JSON 표기법으로 마샬링(json을 xml로)
			// sb.append("\"data\":"+gson.toJson(repList)+"}");
			form.setDataList(repList);
			// log.info("JSON 마샬링 결과 "+sb.toString());
		} else {
			// sb.append("{\"state\"unexpected\"}"); //처리결과를 나타내는 JSON 데이터 셋팅
			// log.info("JSON 마샬링 결과 "+sb.toString());
			form.setState("failed");
			form.setMessage("데이터베이스 오류, 잠시 후 다시 실행해보세요");
		}
		model.addAttribute("form",form);
		return "jsonView";
	}
	
	@RequestMapping("replyList")
	public String replyList(@ModelAttribute("form")BoardFormDTO<ReplyDTO> form) {
		form.setScreen_size(10);
		form.setBlock_size(5);
		form.setTotalRecords(service.getRepCount(form.getBo_no()));
		form.setState("success");
		List<ReplyDTO> repList = service.getRepList(form);
		form.setDataList(repList);
		
		return "jsonView";
	}
	
	@RequestMapping("replyDelete")
	public String replyDelete(ReplyDTO reply, Model model) {
		int result = service.deleteReply(reply);
		BoardFormDTO<ReplyDTO> form = new BoardFormDTO<ReplyDTO>();
		String jsonResult = null;
		if(result > 0) {
//			sb.append("{\"state\":\"success\",");	//처리결과를 나타내는 JSON 데이터 셋팅
			form.setState("success");
			form.setBo_no(reply.getRe_ref_key());
			form.setCurrentPage(1);
			form.setScreen_size(10);
			form.setBlock_size(5);
			form.setTotalRecords(service.getRepCount(reply.getRe_ref_key()));
			List<ReplyDTO> repList = service.getRepList(form);
			form.setDataList(repList);
			//자바스크립트에서 프로퍼티 구분을 ,(콤마)로 함
			//수정된 댓글 리스트를 새로 가져와서 JSON 표기법으로 마샬링
		} else {
			form.setState("failed");
			form.setMessage("비밀번호 오류");
		}
		model.addAttribute("form",form);
		return "jsonView";
	}
}
